package com.wxws.sms;

import java.util.Scanner;

/**
 * 在会员系统中，添加
 * 
 * 1: 尝试加方法：给某一用户涨分的方法。 方法声明如右： boolean inc(String cardNo,int
 * fen)：如果帐号不存在，返回false
 * 
 * 
 * 2：增加新会员方法中添加判断，添加新会员时限制会员号不能重复，如果重复，禁止添加，要求重新输入。 提示：添加方法 boolean
 * checkCardNoRepeat(String no)判断是否重复，如果返回true,则重复。
 * 
 * 3：定义兑换礼品的方法 假设 1：100分兑换餐巾纸一包； 2：400分兑换剃须刀一把； 3：1000分兑换炒锅一个；
 * 用户输入卡号和需要兑换的奖品，兑换成功后扣除相应积分(礼品类不需要定义，用String返回即可)；如果帐号不存在，或者积分不够，兑换失败(提示:如果兑换成功,需要扣除相应的积分)。
 * 如果不成功，返回null。声明如下： public String duihuan(String cardNo,int lipingleixing)
 * 
 * @author zhaoyang
 *
 */
public class SuperMarket {

	String name;
	VIP[] vip = new VIP[100];

	/**
	 * 1: 尝试加方法：给某一用户涨分的方法。 如果帐号不存在，返回false
	 * 
	 * @param vipNum
	 * @param jiFen
	 * @return
	 */
	public boolean inc(String vipNum, int jiFen) {
		if (checkCardNoRepeat(vipNum)) {
			VIP v = find(vipNum);
			v.jiFen += jiFen;
			return true;
		}
		return false;
	}

	/**
	 * 判断会员是否存在 2：增加新会员方法中添加判断，添加新会员时限制会员号不能重复， 如果重复，禁止添加，要求重新输入。
	 * 
	 * @param vipNum
	 * @return
	 */
	public boolean checkCardNoRepeat(String vipNum) {
		for (int i = 0; i < vip.length; i++) {
			if (vip[i] != null && vipNum.equals(vip[i].vipNum)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 加入会员的方法
	 * 
	 * @param vipNum
	 * @param jiFen
	 */
	public boolean addVip(String vipNum, int jiFen) {

		if (checkCardNoRepeat(vipNum)) {
			System.out.println("会员号不能重复!");
			return false;
		}
		for (int i = 0; i < vip.length; i++) {
			if (vip[i] == null) {
				vip[i] = new VIP();
				vip[i].vipNum = vipNum;
				vip[i].jiFen = jiFen;
				// System.out.println("添加成功!");
				return true;
			}
		}
		// System.out.println("添加失败!");
		return false;
	}

	/**
	 * 3：定义兑换礼品的方法 假设 1：100分兑换餐巾纸一包； 2：400分兑换剃须刀一把； 3：1000分兑换炒锅一个；
	 * 
	 * @param cardNo
	 * @param lipingleixing
	 * @return
	 */
	public String duihuan(String cardNo, int lipingleixing) {
		if (checkCardNoRepeat(cardNo)) {
			VIP v = find(cardNo);
			if (lipingleixing == 1 && v.jiFen >= 100) {
				v.jiFen -= 100;
				return "兑换餐巾纸一包";

			} else if (lipingleixing == 2 && v.jiFen >= 400) {
				v.jiFen -= 400;
				return "兑换剃须刀一把";

			} else if (lipingleixing == 3 && v.jiFen >= 1000) {
				v.jiFen -= 1000;
				return "兑换炒锅一个";
			}

		}
		return null;
	}

	/**
	 * 根据会员编号查会员积分
	 * 
	 * @param no
	 * @return
	 */
	public VIP find(String no) {
		for (int i = 0; i < vip.length; i++) {
			if (vip[i] != null && no.equals(vip[i].vipNum)) {
				return vip[i];
			}
		}
		return null;
	}

	/**
	 * 展示会员信息
	 */
	public void showVipInfor() {
		for (VIP a : vip) {
			if (a != null) {
				a.show();
			}
		}
	}

	public static void main(String[] args) {
		// 主方法入口
		SuperMarket sm = new SuperMarket();
		while (true) {
			System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>");
			System.out.println("1、新增会员号码\n2、显示会员信息\n3、会员积分查找\n4、积分增长\n5、兑换礼品\n0、退出程序");
			System.out.println("请输入功能选择：");
			Scanner input = new Scanner(System.in);
			int num = input.nextInt();

			if (num == 1) {// 1、新增会员号码
				System.out.print("请输入新增的会员号码：");
				String vipNum = input.next();
				System.out.print("请输入" + vipNum + "的会员积分：");
				int jiFen = input.nextInt();
				boolean flag = sm.addVip(vipNum, jiFen);
				System.out.println(flag ? "添加成功!" : "添加失败!");

			} else if (num == 2) {// 2、显示会员信息
				sm.showVipInfor();

			} else if (num == 3) {// 3、会员积分查找
				System.out.print("请输入要查询的会员号码：");
				String vipNum = input.next();
				VIP v = sm.find(vipNum);
				if (v == null) {
					System.out.println("没找到此会员");
				} else {
					System.out.println("此会员积分：" + v.jiFen);
				}

			} else if (num == 4) {// 4、积分增长
				System.out.print("请输入要积分增长的会员号码：");
				String vipNum = input.next();
				System.out.print("请输入要增长的积分：");
				int jiFen = input.nextInt();
				if (sm.inc(vipNum, jiFen)) {
					System.out.println("此会员积分：" + sm.find(vipNum).jiFen);
				} else {
					System.out.println("没找到此会员");
				}

			} else if (num == 5) {// 5、兑换礼品
				System.out.println("礼品兑换规则如下：\n1、100积分兑换餐巾纸一包；\n2、400积分兑换剃须刀一把；\n3、1000积分兑换炒锅一个；");
				System.out.print("请输入要兑换的会员号码：");
				String vipNum = input.next();
				System.out.print("请输入要兑换的礼品编号（1、2、3）：");
				int num1 = input.nextInt();
				String v = sm.duihuan(vipNum, num1);
				if (v == null) {
					System.out.println("兑换失败！");
				} else {
					System.out.println(v + "兑换成功！当前剩余积分如下：" + sm.find(vipNum).jiFen);
				}

			} else if (num == 0) {// 0、退出程序
				System.out.println("程序退出,谢谢使用！");
				break;
			}
		}

	}

}
